<?php
namespace app\index\controller;

use app\index\model\Category;
use think\Cache;
use think\Controller;
use think\Request;

class Index extends Controller
{
    // 博客首页
    public function index()
    {
        // 分类名称
        // 获取所有的文章数据
        $arrs = \app\index\model\Category::select();
        // 定义分类对象
        $cate = new \app\index\model\Category();
        // 定义变量接受无限极分类
        $data = $cate->CategoryList($arrs);

        // 关键字查询
        $key = request()->param();

        if(!empty($key['title'])){

            $keyword = $key['title'] ?: "null";

            $blog = \app\index\model\Article::ArtKeyword($keyword);

        }else{

            // 所有的文章数
            $art = new \app\index\model\Article();
            $blog = $art->ArticleList();
        }

        // 限制字符的输出
        foreach($blog as $k=>$v)
        {
            $v['content'] =  substr($v['content'],0,800);
        }

        // 实现按照月份进行集合
        $months = \app\index\model\Article::Months();

        // 友情连接
        $links = \app\index\model\Links::select();

        return view('/index',['blog'=>$blog,'data'=>$data,'links'=>$links,'months' => $months]);
    }

    // 内容页面
    public function content(int $id)
    {
        if(empty($id))
        {
            return $this->error('输入错误','index/index/index');
        }

        // 获取所有的文章数据
        $arrs = \app\index\model\Category::select();

        // 定义分类对象
        $cate = new \app\index\model\Category();
        // 定义变量接受无限极分类
        $catelist = $cate->CategoryList($arrs);

        // 实现按照月份进行集合
        $months = \app\index\model\Article::Months();// 实现按照月份进行集合

        // 友情连接
        $links = \app\index\model\Links::select();

        // 文章内容
        $areOne = new \app\index\model\Article();

        $data = $areOne->ArticleFind($id);
        // 上一篇
        $upDown = \app\index\model\Article::upDpwn($id);
        //下一篇
        $Down = \app\index\model\Article::upDpwn($id,">",'ASC');


        return view('/content',[
            'data'=>$data,
            'catelist' => $catelist,
            'months'=>$months,
            'links'=>$links,
            'upDown' => $upDown,
            'Down' => $Down
        ]);
    }

    // 输出所有的文章列表
    public function blogList()
    {

        $artlist = \app\index\model\Article::order('addate','desc')->paginate(15);
        // 获取所有的文章数据
        $arrs = \app\index\model\Category::select();
        // 定义分类对象
        $cate = new \app\index\model\Category();
        // 定义变量接受无限极分类
        $catelist = $cate->CategoryList($arrs);
        // 实现按照月份进行集合
        $months = \app\index\model\Article::Months();// 实现按照月份进行集合
        // 友情连接
        $links = \app\index\model\Links::select();

        return view('/list',['artlist'=>$artlist,'catelist' => $catelist,'months' => $months,'links'=>$links]);
    }

    // 点赞
    public function praise(int $id)
    {
        // 判断同一篇文章，一个ip只能点赞一次
        if(Cache::get('ip') == request()->ip() && Cache::get('id') == $id){
            $msg = [
                'code' => '10002',
                'msg' => '重复了'
            ];
            return json($msg);
        }
        // 思路根据ip的不同一个ip只能点赞一次
        #　第一次点赞 获取到文章id，并判断一下是否允许执行
        if(empty($id)){
            return $this->error("不允许为空哦，亲",'index/index');
        }
        // 获取到当前ip
        $ip = request()->ip();
        // 获取当前id中对应的那篇文章
        $res = \app\index\model\Article::find($id);
        // 获取当前文章中的点赞数，同时加1
        $praise = $res['praise']+1;
        // 更新数据
        $result = \app\index\model\Article::where('id',$id)->update(['praise' => $praise]);
        // 将刚刚添加的ip和文章id保存在缓存中。
        Cache::set('ip',$ip);
        Cache::set('id',$id);
        // 判断刚刚的点赞数据是否更新成功
        if(!$result){
            $msg = [
                'code' => '10001',
                'msg' => '错误'
            ];
            return json($msg);
        }
        $msg = [
            'code' => '10000',
            'msg' => '成功'
        ];
        return json($msg);
    }

}
